hysop.backend.device.opencl.autotunable_kernels.custom_symbolic module

class hysop.backend.device.opencl.autotunable_kernels.custom_symbolic.OpenClAutotunableCustomSymbolicKernel(cl_env, typegen, build_opts, autotuner_config, **kwds)[source]

Bases: OpenClAutotunableKernel

Autotunable interface for directional remeshing kernel code generators.

autotune(expr_info, hardcode_arrays=True, has_complex=False, disable_vectorization=False, debug=False, **kwds)[source]

Autotune this kernel with specified configuration.

hardcode_arrays means that array offset and strides can be hardcoded into the kernels as constants.

compute_args_mapping(extra_kwds, extra_parameters)[source]

Return arguments mapping which is a dictionnary with arguments names as keys and tuples a values.

Tuples should contain (arg_position, arg_type(s)) with arg_position being an int and arg_type(s) a type or tuple of types which will be checked against.

compute_global_work_size(work, local_work_size, extra_parameters, extra_kwds)[source]

Compute aligned global_work_size from unaligned global_work_size and local_work_size. Input global_work_size may be None.

compute_min_max_wg_size(work_bounds, work_load, global_work_size, extra_parameters, extra_kwds)[source]

Default min and max workgroup size.

compute_parameters(extra_kwds)[source]

Register extra parameters to optimize.

format_best_candidate(**kwds)[source]

Post treatment callback for autotuner results. Transform autotuner results in user friendly kernel wrappers.

Return a OpenClKernel with default_queue and default_args set to None. Only default_global_size, default_local_size, and args_mapping are set.

Use the build_launcher method to build OpenClKernelLauncher from this OpenClKernel.

generate_kernel_src(global_work_size, local_work_size, extra_parameters, extra_kwds, tuning_mode, dry_run)[source]

Generate kernel name and source code

hash_extra_kwds(extra_kwds)[source]

Hash extra_kwds dictionnary for caching purposes.

classmethod sort_key_by_name(iterator)[source]

Utility to sort a dictionary by key name.